PHP大批量插入数据库的3种方法和速度对比

 更新时间:2014年07月08日 08:56:23   投稿:junjie  
这篇文章主要介绍了PHP大批量插入数据库的3种方法和速度对比,3种方法分别使用普通insert语句、insert into语句和事务提交,需要的朋友可以参考下

第一种方法:使用insert into 插入,代码如下:

$params = array(‘value'=>'50′);
set_time_limit(0);
echo date(“H:i:s”);
for($i=0;$i<2000000;$i++){
$connect_mysql->insert($params);
};
echo date(“H:i:s”);

最后显示为:23:25:05 01:32:05 也就是花了2个小时多!

第二种方法:使用事务提交,批量插入数据库(每隔10W条提交下)最后显示消耗的时间为:22:56:13 23:04:00 ,一共8分13秒  ,代码如下:

echo date(“H:i:s”);
$connect_mysql->query(‘BEGIN');
$params = array(‘value'=>'50′);
for($i=0;$i<2000000;$i++){
$connect_mysql->insert($params);
if($i%100000==0){
$connect_mysql->query(‘COMMIT');
$connect_mysql->query(‘BEGIN');
}
}
$connect_mysql->query(‘COMMIT');
echo date(“H:i:s”);

第三种方法:使用优化SQL语句:将SQL语句进行拼接,使用 insert into table () values  (),(),(),()然后再一次性插入,如果字符串太长,

则需要配置下MYSQL,在mysql 命令行中运行 :set global max_allowed_packet =  2*1024*1024*10;消耗时间为:11:24:06 11:25:06;

插入200W条测试数据仅仅用了1分钟!代码如下:

$sql= “insert into twenty_million (value) values”;
for($i=0;$i<2000000;$i++){
$sql.=”('50′),”;
};
$sql = substr($sql,0,strlen($sql)-1);
$connect_mysql->query($sql);

最后总结下,在插入大批量数据时,第一种方法无疑是最差劲的,而第二种方法在实际应用中就比较广泛,第三种方法在插入测试数据或者其他低要求时比较合适,速度确实快。

相关文章

  • ThinkPHP5.0框架使用build 自动生成模块操作示例

    ThinkPHP5.0框架使用build 自动生成模块操作示例

    这篇文章主要介绍了ThinkPHP5.0框架使用build 自动生成模块操作,结合实例形式分析了thinkPHP5使用build自动生成模块的具体步骤、方法与相关操作注意事项,需要的朋友可以参考下
    2019-04-04
  • php bcdiv和bcmul 函数的怪异现象

    php bcdiv和bcmul 函数的怪异现象

    这篇文章主要介绍了php bcdiv和bcmul 函数的怪异现象,本文通过实例代码讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • PHP实现验证码校验功能

    PHP实现验证码校验功能

    这篇文章主要为大家详细介绍了PHP实现验证码校验功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Yii2 如何在modules中添加验证码的方法

    Yii2 如何在modules中添加验证码的方法

    本篇文章主要介绍了Yii2 如何在modules中添加验证码的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解

    thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解

    这篇文章主要介绍了thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果,结合完整实例形式详细分析了thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果具体数据表、控制器、前台视图与样式相关实现技巧,需要的朋友可以参考下
    2019-07-07
  • Yii2框架可逆加密简单实现方法

    Yii2框架可逆加密简单实现方法

    这篇文章主要介绍了Yii2框架可逆加密简单实现方法,涉及Yii框架encryptByPassword()与decryptByPassword()函数简单使用方法,需要的朋友可以参考下
    2017-08-08
  • Yii2.0预定义的别名功能小结

    Yii2.0预定义的别名功能小结

    这篇文章主要介绍了Yii2.0预定义的别名功能,总结分析了Yii2.0常见的12个预定义别名的具体表示方法与对应功能,需要的朋友可以参考下
    2016-07-07
  • php xml实例 留言本

    php xml实例 留言本

    实例学习制作xml留言本代码。
    2009-03-03
  • PHP隐藏手机号码、银行卡号、真实姓名部分内容的方法

    PHP隐藏手机号码、银行卡号、真实姓名部分内容的方法

    这篇文章主要介绍了PHP隐藏手机号码、银行卡号、真实姓名部分内容的方法的实现代码,有时候我们需要将部分内容隐藏那么就可能需要下面的代码了,需要的朋友可以参考下
    2023-11-11
  • PHP基本语法总结

    PHP基本语法总结

    这篇文章主要介绍了PHP基本语法总结,本文从PHP能做什么开始讲解,对PHP的语法、注释、变量、常量等内容做了总结,需要的朋友可以参考下
    2014-09-09

最新评论